[NEW] AWSを使ったライブ動画配信でメディアの品質を考慮した障害対応ができるようになりました! [Media Quality-Aware Resiliency]

[NEW] AWSを使ったライブ動画配信でメディアの品質を考慮した障害対応ができるようになりました! [Media Quality-Aware Resiliency]

動画の品質スコアに基づくオリジンの選択とフェイルオーバーがAWSで可能になりました。MQAR: Media Quality-Aware Resiliencyと呼ばれ、CloudFrontとMediaLive、MediaPackageの統合機能として動作します。
Clock Icon2024.11.29

はじめに

清水です。AWSでライブ動画配信を行う際に、そのメディアの品質を考慮した障害対応ができるようになりました! Media Quality-Aware Resiliency (MQAR) と称するこの機能、2024/11/21付けでWhat's New at AWSに投稿されています。

これまでもAWSでは、リージョン間フェイルオーバー可能なライブ動画配信アーキテクチャーが構成可能でした。今回のアップデートでは、 メディアの品質を考慮した リージョン間フェイルオーバーが可能になります。配信は続けられていても、映像がフリーズしたり歪んだり真っ黒になってしまったり、映像自体に問題が起き障害となるケースがありえます。このようなメディアの品質による障害に対しても、フェイルオーバーを発生させ障害からの復旧を行うことができるようになりました。

このMQAR機能は、AWSのCDNサービスであるAmazon CloudFrontのほか、ライブ動画処理サービスであるAWS Elemental MediaLive、そしてジャストインタイムパッケージングサービスであるAWS Elemental MediaPackageの統合機能として実現されています。上記What's New at AWSでのアナウンスのほか、詳細については以下AWS for M&E Blogのリリースブログエントリにまとめられています。

本エントリでは、上記のリリースブログや各サービスのドキュメントなどから、このMQAR機能でできることや各サービスのアップデート内容などを確認してみたのでまとめてみたいと思います。

これまでのCross-region failover可能なlive streaming architectureとその課題

まずは、これまでのリージョン間フェイルオーバー可能なライブ動画配信アーキテクチャと、その課題について振り返っておきましょう。

MediaLiveとMediaPackage v2のCMAF Ingest連携、ならびにCloudFrontのOrigin failoverの組み合わせで、非常にシームレスなリージョン間フェイルオーバーが容易に可能になったのが、2024年8月のアップデートでした。

上記AWS for M&E Blogのエントリとまったく同じ構成ではないのですが、少し簡略化した構成で、私もこのリージョン間フェイルオーバーを試してみました。東京リージョンと大阪リージョンを使用したのですが、非常にスムーズなリージョン間の映像音切り替えができたことに驚きました。詳細は下記エントリにまとめていますが、実際にフェイルオーバーをさせたときのスムーズな切り替えが確認できる動画も掲載しています。興味があればぜひご参照ください。

さて、そんなリージョン間フェイルオーバーが容易に構築できるようにはなっていたのですが、このフェイルオーバーのトリガとなる障害検知は、MediaLiveやMediaPackageに映像データが入力されないことで行われます。上記ブログエントリで検証しているような、MediaLiveへの映像入力が止まった、というケースであれば障害とし検知されるのですが、入力している映像自体に問題が生じた、という障害は検知されません。

しかし、実際にはこの入力している映像自体に問題が生じる、ということは起こり得ます。映像がフリーズしてしまったり、歪んだりノイズが入ってしまったり、ブラックフレームが入り真っ黒な映像になってしまったり、映像のデータとしては入力されているのですが、その品質に問題が生じている、という状況ですね。これは、例えばMediaLiveへ入力される前の段階でなんらかの原因で発生するものや、MediaLiveでリアルタイム性を維持するためにエンコード品質を下げることで生じてしまうものなど、様々な要因が考えられます。従来まで、このようなメディアの品質を考慮した障害対応については、実際に入出力される映像を視聴することで監視するしかありませんでした。

今回のアップデートであるMedia Quality-Aware Resiliency (MQAR)を使用すると、このようなメディアの品質の低下を障害として検知し、フェイルオーバーを行えるようになります。

Media Quality-Aware Resiliencyを使ったライブストリーミングアーキテクチャ

Media Quality-Aware Resiliency (MQAR)を使ったライブストリーミングのアーキテクチャについて、AWS for M&E Blogのリリースブログをもとにしながら確認してみましょう。

mq09
引用元: Improve your viewers’ live streaming experience with Media-Quality Aware Resiliency | AWS for M&E Blog

基本的には以前のCross-region failoverアーキテクチャに、MQAR機能が追加された構成といえるかと思います。MQAR機能がどのように動作するのか、各サービスごとに確認していきましょう。

まず MediaLive では、入力された映像(上記アーキテクチャではMediaConnectからの冗長化された入力を想定してますね)の品質から Media Quality Confidence Score (MQCS) というものを継続的に生成していきます。このMQCSは、メディアの品質に問題があればそれを反映した値となります。そして、このスコアを後続のMediaPackageにHTTP PUTリクエストの際のCommon Media Server Data (CMSD)ヘッダとして渡します。なお上記アーキテクチャでは、MediaLiveからも冗長化した出力をMediaPackageの入力としていますね。

MediaPackage では、MediaLiveからの映像が2つのパイプラインで冗長化されて入力されています。それぞれの入力映像に付与されているMQCSを断続的に検査し、よりメディアの品質がよいほうのパイプラインを入力として選択します。またMediaPackageからの出力についても、再計算されたMQCSが付与されます。後続のCloudFrontでは、GETまたはHEADリクエストの際のレスポンスに含まれるCMSDヘッダーでこのMQCS情報を確認することができます。

CloudFronot でMQARを有効にすると、CloudFrontはオリジンである2つのMediaPackageからのMQCS情報の比較を行います。この比較は継続的に行われ、メディア品質のより高いMediaPackageオリジンが動的に選択されるようになります。これにより、どちらか一方のリージョンのMediaPackageオリジンでメディア品質に問題が起こっても、もう一方のリージョンのMediaPackageオリジンに自動的に切り替わるという、メディアの品質を起因としたCross-region failoverな構成が可能となるわけです。

MediaLive、MediaPackage、CloudFrontと各サービスで、この MQCS という情報を生成したり利用しながらMQAR機能を実現していることが、アーキテクチャ図ならびにAWS for M&E Blogのリリースブログからわかりますね。

続いては、このMQAR機能のために各サービスでどのようなアップデートがあったのか、具体的にUser Guideやマネジメントコンソールなどから確認をしてみます。

各サービスごとのMedia Quality-Aware Resiliency機能について

MQAR機能サポートにあたり、MediaLive、MediaPacakge、CloudFrontのそれぞれでアップデートがありました。本章では各サービスごとのMQAR向けアップデートについて確認します。

AWS Elemental MediaLiveのMQAR向けアップデート

まずはMediaLiveです。MediaLive User GuideのDocument historyを確認してみましょう。「MQCS (media quality confidence score)」という2024/11/22付けの変更項目がありますね。

mq06
引用元: Document history for user guide - MediaLive

Documentの更新内容は以下ページとなります。

MediaLiveで利用できるようになった MQCS (Media Quality Confidence Score) についての詳細が記載されていますね。まずはこのMQCSを使用する条件を確認してみましょう。 出力先がMediaPackage Channelであり、CMAF Ingest output groupsを利用すること が条件に挙げられています。なお、User GuideにMediaPackageのバージョン(v1かv2か)についての記載はありませんが、CMAF Ingestを利用ということで必然的にMediaPackage v2となる認識です。

またMQCSの設定方法としては、セットアップなどは特に不要、出力先がMediaPackageでCMAF Ingest output groupを利用する場合に自動的にMQCS機能が有効になるとのことです。(自動的に有効になることからか、APIとしての更新情報などは確認できませんでした。)

MQCSの値についての説明もありますね。MediaLiveのMQCSでは、入力ソースが黒いフレームで構成されているか(Black Frames)、入力ソースががフリーズしたフレームで構成されているか(Freeze Frames)、MediaLiveでエンコードせずにドッロップしたフレームがないか(Video Frame Drops)、といったことを検査して品質スコアに反映します。この品質スコアは最高品質であれば100、フレームに問題があればそれだけ品質スコアを下げていきます。なお品質スコアに影響される問題検出の詳細については、User GuideやAWS for M&E Blogのリリースブログをご確認ください。

そしてこのMQCSについて、MediaLiveではCloudWatchへMQCSメトリクスを発行します。詳細についてはMediaLive User Guideの以下ページに記載されています。

実際にMediaPackage v2とCMAF Ingestで連携するMediaLive Channelを作成し、CloudWatchメトリクスを確認してみました。以下のように、MinMqcsというメトリクスが確認できました。この間、MediaLiveへの入力映像は問題がなかったため、値は常に100となっていました。

mq07

AWS Elemental MediaPackageのMQAR向けアップデート

MediaPackageでは、Media Quality Confidence Scores (MQCS)とCommon Media Server Data (CMSD) headersがサポートされるアップデートがありました。

MediaPacakge v2 User GuideのDocument historyを確認してみましょう。どちらも2024/11/21付けで変更項目に挙げられています。

mq01
引用元: Document history for the MediaPackage User Guide - AWS Elemental MediaPackage

User Guideに追加されたアップデートに該当するページは以下となります。

AWS CLIのCHANGELOGでも、1.36.7でmediapackagev2に対して該当のアップデートがあったことが確認できます。

  • api-change:mediapackagev2: MediaPackage v2 now supports the Media Quality Confidence Score (MQCS) published from MediaLive. Customers can control input switching based on the MQCS and publishing HTTP Headers for the MQCS via the API.
    引用元: aws-cli/CHANGELOG.rst at develop · aws/aws-cli · GitHub

確認しているUser GuideやAPIの更新内容からわかるように、MQCSとCMSD headersサポートのアップデートについてはMediaPackage v2が対象となります。また、MediaPackageのInput typeとしてCMAFである必要があります。実際にマネジメントコンソールでChannelを作成する際の設定項目を確認してみましょう。デフォルトであるInput type HLSではMQCSまわりの設定はありません。

mq02

Input typeをCMAFにしてみます。「Media Quality Confidence Score (MQCS) settings」という項目が現れましたね。MQCSを基準としたinput switchを有効にするか( "Enable input switch based on MQCS" )と、CMSDでのMQCSパブリッシングを有効にするか( "Enable MQCS publishing in Common Media Server Data (CMSD)" )の設定が行えます。CMAFを選択した際のデフォルトでは、両方が有効となっています。

mq03

設定できる2つの項目について、概要を押さえておきましょう。まず "Enable input switch based on MQCS" の設定では、MediaPackageの入力に対してMQCSを使用するかたちです。MediaPackageでは冗長化をもたせた2つの入力が利用可能です。それぞれ「Ingest endpoint 1」と「Ingest endpoint 2」とマネジメントコンソールでは表記されていますね。この2つの入力のフェイルオーバー基準に、MediaLiveから送られるMQCSを利用できる、というわけです。これまで(MQCSを使わないかたち)も、MediaLiveからのデータの送信が止まったらフェイルオーバーする、といったことはできていましたが、MQCSを使うことでメディアの品質をベースとしたフェイルオーバーが可能になる、というわけですね。

続いて2つめの "MQCS will show up as CMSD keys in the CMSD-Static output headers" の設定です。こちらはMediaPackageの出力にMQCSを含むかどうか、という設定となります。この設定を有効にすることで、MediaPackageで再計算された品質スコアを後続のCDNなどに伝えることができます。この伝達方法として、「Common Media Server Data (CMSD)」というHTTPレスポンスヘッダを使用します。MediaPackage側では、CDNなどからのコンテンツリクエストの際のレスポンスに、MQCSを含んだCMSDヘッダを付与します。

なお、MediaPacakgeで使用できるCMSDヘッダのキーについては、Consumer Technology AssociationのCTA-5006という仕様で定義されているもののほか、AWSが独自で定義しているCMSDキーも含まれており、MQCSについてはこの独自キーとして扱われているようです。詳細はMediaPackage User Guideをご確認ください。

Amazon CloudFrontのMQAR向けアップデート

続いてCloudFrontのアップデート内容について確認しましょう。CloudFront Developer GuideのDocument historyには「Media quality-aware resiliency support for CloudFront」という項目でアップデートが記載されています。

mq04
引用元: Document history - Amazon CloudFront

アップデート対象となるページは下記です。「Video on demand and live streaming video」という章に新たに「Media quality-aware resiliency」という節が追加されたちですね。

AWS CLIのCHANGELOGでも、1.36.8でcloudfrontに対して該当のアップデートがあったことが確認できます。

CloudFront Distributionに対しこのMQAR機能を有効にすると、CloudFrontが最高の品質スコアを持つと判断されるオリジンを自動的に選択するとのことです。

MQAR機能を有効にした際の具体的な挙動についても記載があります。2つの異なるAWSリージョンにデプロイされたMediaPackage v2オリジンに対し、CloudFrontはプライマリのMediaPackageにはGETリクエストを行います。そして同時にセカンダリのMediaPackageオリジンにはHEADリクエストを行い、それぞれのオリジンからメディア品質についてのスコア、MQCSを受け取ります。CloudFrontはこのMQCS情報を使用して、続く新しいリクエストに対してはより高いスコアのオリジンを使用するように動作する、ということです。

なおこのCloudFrontのMQAR機能について、MediaPackage v2オリジンのみをサポートしていると記載があります。

MQARを有効にするには、CloudFront Distributionの設定で、Origin groupを作成します。プライマリならびにセカンダリとなる2つのMediaPacakgeオリジンを選択し、Media quality score オプションを有効にします。マネジメントコンソールでは以下のように、Origin selection criteria という項目が追加されています。デフォルトではDefaultの項目が選択されていますが、ここでMedia quality scoreを選択することで有効になります。

mq08

このMedia quality scoreオプションを有効にしたOrigin groupを作成したあと、MediaPacakgeからのライブストリーミング配信を行うBehaviorのOrigin (Origin group)に指定することで、実際にリクエストに対してMQCSを基準としたフェイルオーバーが可能になります。

まとめ

AWSを使ったライブ動画配信でメディアの品質を考慮した障害対応ができるようになる新機能 Media Quality-Aware Resiliency (MQAR) について、その概要と各サービスのアップデート内容などを確認してみました。AWS Elemental MediaLive、AWS Elemental MediaPackage、Amazon CloudFrontのそれぞれが連携し MQCS (Media Quality Confidence Score) と呼ばれる情報を用いてメディア自体に起因する障害の検知、リージョン間フェイルオーバーを行うアップデートです。

本エントリでは、概要の確認のほかMediaLive、MediaPackage、CloudFront各サービスの機能アップデートの確認までを行いました。実際に各サービスでMQARに関する機能を有効化し、メディアの品質に問題があった際にどのような挙動となるかなど詳細の確認については別エントリにてまとめていきたいと思います。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.